# _*_ coding: utf-8 _*_
"""
@ 时间    ：2024/10/26 10:07
@ 作者    ：旺财
@ 文件    ：02 Kmeans-银行客户分群模型.py
@ 说明    ：   
"""
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 1. 读取数据
df = pd.read_excel('客户信息.xlsx')
print(df.head())

# 2. 定义画布,绘制原始图
plt.rcParams['font.sans-serif'] = ['SimHei']
_, axs = plt.subplots(1, 2, figsize=(15, 5))

axs[0].scatter(df.iloc[:, 0], df.iloc[:, 1], c='green', marker='*')
axs[0].set_title('原图')
axs[0].set_xlabel('年龄(岁)')
axs[0].set_ylabel('收入(万元)')
axs[0].legend(['样本'], loc=4)

# 3. 分3类
kms = KMeans(n_clusters=3, random_state=123)
kms.fit(df)
label = kms.labels_
print(label)

# 4.绘制分类图
axs[1].scatter(df[label == 0].iloc[:, 0], df[label == 0].iloc[:, 1], c='green', marker='*')
axs[1].scatter(df[label == 1].iloc[:, 0], df[label == 1].iloc[:, 1], c='red', marker='o')
axs[1].scatter(df[label == 2].iloc[:, 0], df[label == 2].iloc[:, 1], c='blue', marker='+')
axs[1].set_title('客户分群')
axs[1].set_xlabel('年龄(岁)')
axs[1].set_ylabel('收入(万元)')
axs[1].legend(['客户群1', '客户群2', '客户群3'], loc=4)

plt.show()
